The subject matter of the description relates to an improvement in the performance of mail delivery in a mailing system.
With the wide spread of mail distribution using mobile phones, mail service systems (hereafter referred to as mailing systems) provided by mobile communication carriers have come to process a large number of mails. The mobile communication carrier performs the process of relaying the mails received from mobile phones or through the Internet to their destinations by using a mail relaying system including a mail gateway and a data store server for storing the mails, both incorporated in the mobile communication carrier's equipment.
The mail relaying system performs the following processes to improve its communication capability in the course of mail relaying. First, the mail gateway receives a mail from a mobile phone, temporarily stores the received mail in a volatile memory, and relays the stored mail to the destination server. When the relaying task is successful, the mail gateway returns to the mobile phone a response that the mail has been successfully received, deletes the mail temporarily stored in the volatile memory, and then ends the mail relaying process.
During the mail relaying process, when a predetermined length of time has lapsed after the mail has been relayed to the destination server, the mail gateway provides a resending time for the sent mail and stores the resending time in a volatile or non-volatile memory in the data store server. Then, after having sent out to the mobile phone a response that it received the mail, the mail gateway deletes the mail stored in the volatile memory. Next, the mail gateway (not limited to the mail gateway that has performed mail receiving process) stores in the volatile memory the mail read from the volatile or non-volatile memory of the data store server, and relays the stored mail to the destination server in synchronism with the resending time. When this relaying process proved successful, the mail gateway deletes the mail stored in the volatile memory and in the volatile or non-volatile memory of the data store server, to end the relaying process.
It is customary that data store servers, which must usually store a huge amount of data, utilizes a so called “distributed in-memory KVS (key value store)” configuration in consideration of scalability and processing speed. The distributed in-memory KVS is a data storage in which a combination of key and value is stored in a volatile memory, can realize a high scalability, and provides a high process capability for in-memory configuration. In the in-memory KVS, the loss of data that may occur in the in-memory environment can be prevented through the replication of the data in a plurality of servers. Hereinafter, the process of storing the combination of key and value in a volatile memory is referred to as “storing”; the process of reading value corresponding to key from the volatile memory as “fetching”; and the process of deleting the combination of key and value from the volatile memory as “deleting”.
Since in a mail system mails must be fetched and sent in the sequence in which they were stored in the KVS, the mails should be handled in such a queue configuration as FIFO (first in, first out). A method for realizing a queue configuration on KVS is known in, for example, JP-A-2002-132801 (referred to as Patent Literature 1) (cf. paragraph 0020). The technique disclosed in the patent literature 1 is to manage the sequence of mails on the KVS by using information for managing sequence (hereafter referred to as “sequence management information”). The sequence management information is that information which time-sequentially manages the times at which the mails stored in the KVS are sent out, and the combinations of values of mails and the corresponding keys. Since the sequence management information must be shared among all the mail gateways, it is stored on the KVS as values having specific keys.
However, since the size of data on the sequence management information increases in proportion to the increase in the number of mails stored in the data store server, the process of storing mails in the data store server and fetching the mails from the data store server takes much time in proportion to the number of the mails stored in the data store server so that the capability of mail distribution by the mail gateway becomes poor. There are two reasons for this:                Data cannot be partially fetched and stored in the KVS, and when the sequence management information is referred to and updated, it is necessary to fetch and update the entire sequence management information simultaneously. Accordingly, if the sequence management information becomes very large, the time required for the communication of data between the mail gateway and the KVS increases proportionately.        In order to secure the operations on the in-memory configuration, whenever data is stored in the KVS, there is need for a replicating operation. Accordingly, if the sequence management information becomes very large, the time required for the replicating operations increases proportionately.        
There is a well-known method to avoid the increase of sequence management information size in a way that divides and manages the sequence management information.
The procedure for managing the sequence management information in a divided fashion includes a method of management using a list structure. The list structure links the each element in the list by using a pointer. In order to realize mail queues on the KVS, a set of the sending time of a mail and the key to the mail data is stored in each element. In fact, sequence management information is divided into units for each mail and the divided units are separately managed. By following this procedure, the process of storing and fetching mails can be performed without fetching unnecessary sequence management information so that an improvement in the mail distribution performance can be expected.
“A Scalable Queuing Service Based on an In-Memory Data Grid” by Yuan Wang, Han Chen, Bin Wang, Jing Min, and Hui Lei, 10-12 Nov. 2010, IEEE Xplore DIGITAL LIBRARY, <URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5704322> (referred to as Literature 2) discloses a technique of managing all mails in a hierarchical manner by using two sorts of tables: one is the table of lower rank for managing sequence management information and the other is the table of higher rank for managing the table of lower rank. The table of lower rank stores the sequence management information covering a predetermined number of mails. In fact, the sequence management information is managed by being divided into a plurality of subsets each of which includes information for a predetermined number of mails. By following this technique, the process of storing and fetching mails can be performed without fetching unnecessary sequence management information.